package com.cos.service.admin.dynamic;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cos.dao.DaoSupport;
import com.cos.entity.Page;
import com.cos.util.PageData;
import com.cos.util.StringUtil;

@Service("companyCircleService")
public class CompanyCircleService {
    
	@Autowired
	private DaoSupport  daoSupport ;
	/**
	* 针对某一个企业
	*列表(查询企业所有内容分类，包括(公司自己定义的) 
	*/
	public List<PageData> getInforTypeList(PageData pd)throws Exception{
		//首先判断该公司是否有自己创建的分类
		List<PageData> pdList = hasCid(pd) ;
		if(pdList.size()==0 || pdList ==null) {
			pd.put("C_ID", "") ;
		}
		return (List<PageData>)daoSupport.findForList("CompanyCircleMapper.getInforTypeList", pd);
	}
	/**
	* 针对所有企业(管理员)
	*列表(查询企业所有内容分类，包括(公司自己定义的) 
	*/
	public List<PageData> getListAll(PageData pd)throws Exception{
		return (List<PageData>)daoSupport.findForList("CompanyCircleMapper.getListAll", pd);
	}
	/**
	* 针对所有企业
	*列表(查询企业所有企业分类)
	*/
	public List<PageData> getCompanyListAll(PageData pd)throws Exception{
		return (List<PageData>)daoSupport.findForList("CompanyCircleMapper.getCompanyListAll", pd);
	}
	/**
	 * 查询该企业是否建立了自己的内容分类
	 */
	public List<PageData> hasCid(PageData pd)throws Exception{
		//首先判断该公司是否有自己创建的分类
		return (List<PageData>)daoSupport.findForList("CompanyCircleMapper.hasCid", pd);
	}
	/**
	 * 将PageData里的ID组装成字符串
	 * @return
	 */
	public String[] groupIDs(List<PageData> pd) {
		String str = "" ;
		for(PageData pageData :pd) {
			str += pageData.getString("ID") +","; 
		}
		str = str.substring(0,str.length()-1) ;
		return StringUtil.StrList(str);
	}
	/**
	 * 批量获取内容分类下面的所有企业
	 */
	public List<PageData> getListInInfoType(String[] ArrayDATA_IDS) throws Exception{
		return (List<PageData>)daoSupport.findForList("CompanyCircleMapper.getListInInfoType", ArrayDATA_IDS);
	}
	/**
	 * 批量获取莫一个分类下面的所有企业
	 */
	public List<PageData> getListInCompanyType(String[] ids) throws Exception {
		return  (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getListInCompanyType",ids);
	}
	/**
     * 获取内容分类下该公司发布的所有动态信息
	 */
	public List<PageData> getDynamic(PageData pd) throws Exception {
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getDynamicByCidIid", pd) ;
	}
	/**
	 * 根据Cid去查询 该公司发布的动态消息
	 */
	public List<PageData> getDynamicById(String C_ID) throws Exception {
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getDynamicByCid",C_ID) ;
	}
	/**
	 * 组装 显示树结构-->内容分类与企业之间
	 */
	public List<PageData> groupTreeInfo(List<PageData> type,List<PageData> company) {
		List<PageData> pd = new ArrayList<PageData>() ;
		for(PageData t:type) {
			PageData p = new PageData() ;
			p.put("pId", 0) ;
			p.put("name", t.getString("NAME")) ;
			p.put("id", t.getString("ID")) ;
			for(PageData c:company) {
				if(t.getString("ID").equals(c.getString("I_ID"))) {
					p.put("open",true ) ;
					PageData pc = new PageData() ;
					pc.put("id", c.getString("ID")) ;
					pc.put("pId", t.getString("ID")) ;
					pc.put("name", c.getString("NAME")) ;
					pc.put("target", "treeFrame") ;
					pc.put("url", "companyCircle/listDynamic.do?ID="+c.getString("ID")+"&I_ID="+t.getString("ID")+"&flag=0") ;
					pd.add(pc) ;
				}else {
					p.put("isParent", true) ;
				}
			}	pd.add(p) ;
		}
		return pd ;
	}
	/**
	 * 组装 显示树结构-->企业分类与企业之间
	 */
	public List<PageData> groupTreeCompany(List<PageData> type,List<PageData> company) {
		List<PageData> pd = new ArrayList<PageData>() ;
		for(PageData t:type) {
			PageData p = new PageData() ;
			p.put("pId", 0) ;
			p.put("name", t.getString("TYPENAME")) ;
			p.put("id", t.getString("ID")) ;
			
			for(PageData c:company) {
				if(t.getString("ID").equals(c.getString("T_ID"))) {
					p.put("open",true ) ;
					PageData pc = new PageData() ;
					pc.put("id", c.getString("ID")) ;
					pc.put("pId", t.getString("ID")) ;
					pc.put("name", c.getString("NAME")) ;
					pc.put("target", "treeFrame") ;
					pc.put("url", "companyCircle/listDynamic.do?ID="+c.getString("ID")+"&flag=1") ;
					pd.add(pc) ;
				} else {
					p.put("isParent", true) ;
				}
			}
			pd.add(p) ;
		}
		return pd ;
	}
	
	
	/**
	 * 列表查询该动态的所有图片
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> getDynamicImg(PageData pd)throws Exception{
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getDynamicImg",pd);
		
	}
	
	
	
	/**
	 * 获取关注企业的列表
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<PageData> getFocus_Company(Page page) throws Exception {
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getFocusCompany", page);
	}
	
	
	/**
	 * 获取收藏公司列表
	 * @param pd
	 * @return
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public List<PageData> getCompanyCollection(Page page) throws Exception {
		return  (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getCompanyCollection",page);
	}
	
	/**
	 * 获取推荐企业
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<PageData> getCompany_Recommend(Page page) throws Exception {
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getCompany_Recommend", page);
	}
	
	/**
	 * 根据企业ID  获取企业的最新两条动态
	 * @param C_ID
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<PageData> getCompany_Dynamic(String C_ID) throws Exception {
		return (List<PageData>) daoSupport.findForList("CompanyCircleMapper.getCompany_Dynamic", C_ID);
	}
	/**
	* 新增新的内容分类
	*/
	public void saveInformationType(PageData pd) throws Exception {
		daoSupport.save("CompanyCircleMapper.saveInformationType", pd) ;
	}
	/**
	 * 添加数据到中间表company_info_type
	 */
	public void saveCompanyInfoType(PageData pd) throws Exception {
		daoSupport.save("CompanyCircleMapper.saveCompanyInfoType", pd) ;
	}
	/**
	 * 添加数据到中间表dynamic_Company_Info_Type
	 */
	public void saveDynamicCompanyInfoType(PageData pd) throws Exception {
		daoSupport.save("CompanyCircleMapper.saveDynamicCompanyInfoType", pd) ;
	}
	/**
	 * 新增动态
	 */
	public void saveDynamic(PageData pd) throws Exception {
		 daoSupport.save("CompanyCircleMapper.saveDynamic", pd) ;
	}
	/**
	 * 根据id修改动态信息的type_id值
	 * @param pd
	 * @throws Exception
	 */
	public void editByID(PageData pd)throws Exception{
		daoSupport.update("CompanyCircleMapper.editByID", pd);
	}
}